home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / cmenu4c.arc / CMENU4.DOC next >
Text File  |  1985-11-06  |  21KB  |  439 lines

  1.                             Cmenu4 Documentation
  2.                               Daniel B. Doman
  3.                         132 East 45th Street Apt. 5G
  4.                             New York, N.Y. 10017
  5.  
  6.  
  7.     These programs represent considerable time, and effort. I am marketing 
  8. them using the FreeWare (tm) marketing approach. In this way I can 
  9. distribute reasonably priced software. If you find these programs useful, 
  10. or if you plan to implement them in a commercial environment, a payment of 
  11. $15.00 is suggested. You are free to copy these programs, and pass them 
  12. around, but you may not charge for such distribution, nor may you modify 
  13. the Copyright notice that appears on the bottom of the menu. Please let 
  14. your conscience be your guide.
  15.     A more powerful "resident" version that is much faster is available by 
  16. mail only. It does not use batch files of any kind. Rather, your programs 
  17. are executed from within the menu. Program entry, and exit is almost 
  18. instantaneous. The speed of the menu is limited only be your system's 
  19. ability to load your programs, and the speed with which your monitor can 
  20. repaint the menu. The resident version executes roughly 50% faster 
  21. Cmenu4C. Because it does not need to write to any drive, you can run it on
  22. a write protected drive. If you are interested in this version please send 
  23. a check for $35.
  24.     Cmenu4 was written for distribution by modem. The code was made as 
  25. compact as possible. Several features were left out in order to keep code 
  26. size down. Larger, more sophisticated versions are available, but they 
  27. would not be practical to transmit by modem. Also, for similar reasons, 
  28. this documentation is necessarily short. You may write for more detailed 
  29. documentation.
  30.     Registered users will be kept up to date on all new versions, and 
  31. modifications. In addition, they are eligible for assistance should they 
  32. have any problems. I cannot answer support questions unless you register 
  33. your copy.
  34.  
  35.                 Please make checks Payable To DannySoft Inc.
  36.  
  37. Mailing Address:
  38.  
  39.                            Daniel B. Doman
  40.                            132 East 45th Street Apt. 5G
  41.                            New York, N.Y. 10017
  42.                            
  43.                                   History
  44.                            
  45.     These programs were written as part of a shell for network design. I 
  46. wanted to make the networks that I built as easy to use as possible. Also, 
  47. certain operations needed to be made in a formal, and structured manner, 
  48. and a menu was the best way to do this. The programs were originally 
  49. written in Compiled Basic. I rewrote them in C with the expectation of 
  50. using the FORK/EXEC functions, however, many network functions require a 
  51. complex, and varied series of commands, and the data file would have had 
  52. to be excessively complex. This  is the network version, and works with 
  53. batch files. It is intended to be easy to use, set up, and speed was a 
  54. primary consideration in the design. This version of the Cmenu programs is 
  55. a result of many users asking about "nesting menus". While the earlier 
  56. version, Cmenu2 could nest menus through the use of the menu batch file, 
  57. this version can actually load another data file without having to exit to 
  58. DOS. If you are updating from Cmenu2, or Menu2.exe, please read the 
  59. changes section. A new field has been added, and some of the "key words" 
  60. that the program searches for have been changed for clarity.
  61.  
  62.                             
  63.  
  64.                                    Theory
  65.                            
  66.     When the Menu program is loaded, it reads in a file containing the 
  67. Selection names, their descriptions, and the commands that they will call. 
  68. The menu supports passwords. If a password is put in the data file, the 
  69. menu will ask for it. The Cmenu4 program runs inside a batch file. It 
  70. dynamically creates a batch file called Runit.bat that contains the 
  71. commands for the menu choice that the user selected. Runit will change to 
  72. to the appropriate drive, and directory, run your program, return you to 
  73. your default drive, and directory, and then call the Menu.bat again. Your 
  74. menu batch file must be called MENU, because Runit.bat always calls MENU 
  75. when it is finished. One can move around the menu with the cursor keys, 
  76. and the END & HOME keys. Once things are set up properly, one merely moves 
  77. to the desired selection, hits the RETURN key, and the application is up, 
  78. and running. After quitting the application, the MENU batch file is 
  79. automatically called again, and back comes the menu. The menu is really 
  80. fast. It should load from a hard disk in a little under two seconds. While 
  81. it will work on a floppy system, it strikes me as overkill to do so.
  82.  
  83.  
  84.                                    Setup
  85.  
  86.     Run Cmenu4 with the sample data file (Menu.dat) so that you can get an 
  87. idea of what it should look like. First run it without the MENU.BAT so 
  88. that you can look at the RUNIT.BAT that it creates. The run it using the 
  89. MENU.BAT. Below is a sample Menu.Bat
  90.  
  91. MENU.BAT
  92.  
  93. Echo Off
  94. C:   <-this may not be necessary, but it is good housekeeping
  95. cd\  <-this may not be necessary, but it is good housekeeping
  96. Cmenu4    {optional menu file name} {switch options}
  97. Runit  <-runit is dynamically created
  98.  
  99.     note: If you say Cmenu4 %1 %2 %3 %4 %5 %6 , you can type "MENU 
  100.     {options}" , and these options will be read in as `replaceable 
  101.     parameters'. Read `programming tips' for more details.
  102.  
  103.     Runit.bat contains all of the necessary commands to run a normal 
  104. program. If you program is on another drive, it will change drives. If it 
  105. is on another subdirectory, it will change to that subdirectory, and then 
  106. call your program. Cmenu4 considers "Home" to be the drive, and directory 
  107. in which you load it. It will program runit.bat to return you to that 
  108. drive, and subdirectory before calling the Menu.bat again. If you exit to 
  109. DOS, and run Cmenu4 on another drive, or directory, "Home" will be on the 
  110. new drive, or directory. Home is where you load Cmenu4.
  111.     Below is a typical Runit.bat
  112.  
  113. RUNIT.BAT
  114.  
  115. CD C:\LOTUS
  116. 123.EXE
  117. C:       <- Cmenu4 always returns you to your home drive
  118. CD\      <- Cmenu4 always returns you to your home directory
  119. MENU
  120.  
  121.     If your program is on a different drive, Runit.bat will change to that 
  122. drive. If you need to run a more complex series of commands to execute 
  123. your program, turn to the "Programming Tips" section of this documentation.
  124.  
  125.  
  126.                                Switch Options
  127.  
  128.          Cmenu4 Checks for the display type. It tests your system switch 
  129. settings. If you are using a compatible that confuses the program, or a 
  130. color card with B&W monitor, you can force the display mode that the 
  131. program will run under
  132.  
  133.          -B   Force the program to Monochrome Mode
  134.          -C   Force the program to color mode
  135.  
  136.          When Cmenu4 executes a command, it will clear the screen, and say 
  137.          EXECUTING xxxxxxx . 
  138.  
  139.          -R   Turns the "Execution" Display Off
  140.  
  141.   You can exit the menu by pressing the ESC key.
  142.  
  143.          -E   Disable the ESC Key for exit.
  144.  
  145.          Cmenu4 looks for a data file named "Menu.dat" . You can tell it 
  146.          to look for a data file by any other name.
  147.  
  148.          Cmenu4 SPECIAL.DAT  <- Tells Cmenu4 to load the data file 
  149.                                 SPECIAL.DAT
  150.  
  151.          -V  Gives Version number. Program Quits afterwards.
  152.  
  153.                            Special Color Switches
  154.  
  155.     These switches take color values as per your BASIC manual ie.. 
  156.     0=BLACK, 4=RED etc..
  157.  
  158.          -BK  Background Color (do not use color value higher than 7)
  159.  
  160.          -FR  Menu border Color (the menu frame)
  161.  
  162.          -TI  Color for the time display
  163.  
  164.          -RE  reverse video foreground color (currently selected choice)
  165.  
  166.          -LA  color for selection names
  167.  
  168.          -LO  color for my logo at bottom of menu
  169.  
  170.          -MT  color for menu title on top
  171.  
  172.          -DE  color for the selection description (above logo)
  173.  
  174.  Example: Cmenu4 -fr7 -ti12 <- Sets frame color to White, and time to 
  175.              Light Red.
  176.  
  177.     The options can be given in any order, are NOT case sensitive, and 
  178. there is no real limit to the number of options that you can give. You can 
  179. specify the subdirectory that contains the data file e.g.. 
  180. Cmenu4 c:\datafiles\SMART.DAT. If you give the same option twice with two 
  181. different values, the second value is accepted. Below is a silly example 
  182. that would still work.
  183.  
  184. Cmenu4 SPECIAL.DAT -B STUPID.DAT -C GREAT.DAT -B SILLY.DAT -C SMART.DAT
  185.  
  186.     The program will execute the LAST color option, and the last data file 
  187.     option given. Cmenu4 would load SMART.DAT in COLOR Mode.
  188.  
  189.     The above is NOT recommended, but it does show how the switches work. 
  190. Except in unusual cases, it should not be necessary to force the colors 
  191. with the -C, or -B options. The other color options are for differences in 
  192. taste. Unless you plan on nesting your menus, you might as well use the 
  193. default menu data file name "MENU.DAT".
  194.  
  195.  
  196.                                 Menu Styles
  197.  
  198.     Cmenu4 will arrange your menu in two or three columns, depending on 
  199. the number of selections that you have. The menu selections are normally 
  200. in two columns, but if the number of selections is Divisible by three (3), 
  201. or greater than ten (10), they will be in three columns. You may want to 
  202. pad your menu with a semi-useful selection in order to make the columns 
  203. even.
  204.  
  205.  
  206.                               Newmenu Program
  207.  
  208.     This program is a simple, and painless way to build you own menu data 
  209. file. Although you have the option of putting in a password, it is not 
  210. recommended that you do so the first time. In any case, if this menu is to 
  211. be used on your own personal system, passwords would be silly. Perhaps 
  212. this reflects my own tastes, but the Newmenu program will capitalize all 
  213. menu selection names, commands, and passwords. It will capitalize the 
  214. FIRST letter of each word in your descriptions. If you have your CAPS lock 
  215. key toggled on, everything will be capitalized. The prompts that this 
  216. program gives are discussed below. As an aid in designing symmetrical 
  217. menus, the Newmenu program will tell you on the bottom of the screen 
  218. whether the menu would be ragged, or even and the number of columns at THE 
  219. CURRENT selection position. The Newmenu program will automatically insert 
  220. the appropriate "Exit" commands. It will also take care of the commands to 
  221. switch to the Submenu. You do not need to put these commands in yourself.
  222.  
  223. MENU TITLE?   <- This is the name that will appear in the box at the top 
  224.                  of the menu
  225.  
  226. SELECTION?    <- This is the selection name that is put on the menu. Press 
  227.               RETURN if you do not want any more selections.
  228.  
  229. DESCRIPTION? <- A description of what the selection does 
  230.  
  231. SUBDIRECTORY? <- The drive, and subdirectory of your program goes here. 
  232.               You must use the form - "C:\LOTUS". DO NOT omit the drive 
  233.               letter. If you leave this field blank. Your program will be 
  234.               executed on the default drive, and subdirectory
  235.  
  236. COMMAND?      <- The name of the program, or DOS command that you want to 
  237.               execute. It can be a program such as CHKDSK.COM, or it can 
  238.               be another batch file. If you call another batch file, 
  239.               remember to make the last line MENU, so that you will call 
  240.               up your menu again.
  241.  
  242. PASSWORD?     <- If you just hit the RETURN KEY, there is no password. DO 
  243.               NOT ADD SPACES. They count as part of the password. Two 
  244.               spaces followed by a return means that the password is two 
  245.               spaces!! The menu title has a password for exit functions. 
  246.               You can prevent an exit unless the user has the correct 
  247.               password. If you elected not to have passwords, you will 
  248.               not see this prompt.
  249.  
  250.     When you are done, just hit the return key for selection name. You 
  251. will be asked if you want to accept the default submenu. The default is a 
  252. collection of useful DOS commands, and the submenu title is UTILITY MENU. 
  253. You can build your own, or accept the default. Hit the RETURN KEY to 
  254. accept the default. You will then be asked if you want to omit the submenu 
  255. entirely. This option is primarily intended for nested menus.
  256.  
  257.                               Newmenu Options
  258.  
  259.     Newmenu will build a menu data file called "Menu.dat", but if you 
  260. enter "NEWMENU SPECIAL.DAT". It will create a data file by that name. If 
  261. you already have a data file by the same name, it will rename that file 
  262. with an .OLD extension. By the way, the .DAT extension is not necessary, 
  263. but a nice convention. Although it you will probably never need to, you 
  264. can specify the drive, and directory in which you want to create the data 
  265. file e.g.. NEWMENU C:\DATA\SAMPLE.DAT.
  266.  
  267.     All of the color options will also work with Newmenu.
  268.  
  269.                               Programming Tips
  270.  
  271.                           Menu Data File Structure
  272.  
  273.     I purposely designed the Cmenu4 programs to use ASCII data files in 
  274. order to let people modify them with any text editor. Do not modify the 
  275. data file until you understand how Cmenu4 works
  276.     The menu data file contains four, or five fields, separated by COMMAS 
  277. (,). Do not use a comma in any Name, Description, Or Command. The fifth 
  278. field is the password. Anything after a FOURTH Comma (if there is one), 
  279. INCLUDING SPACES will be interpreted as a password.
  280.     The structure is as follows:
  281.  
  282. SELECTION NAME,DESCRIPTION,DRIVE & DIRECTORY,COMMAND,PASSWORD (If any)
  283.  
  284.     Any field can be blank.
  285.  
  286.     The First line of the data file is the menu title, it will have two or 
  287. more commas following it, or it may (for clarity) have ,NUL,NUL following 
  288. it. A FOURTH COMMA, followed by ANYTHING will be the password to exit the 
  289. menu. If you leave the directory field blank, the program will be executed 
  290. in the default drive, and directory. If you leave the command blank, this 
  291. will be interpreted as a command to exit. There is a maximum of 21 
  292. selections per menu screen, including the Exit, and Submenu options.
  293.  
  294. SAMPLE MENU,,        <-No Password Here
  295. SAMPLE MENU,,,,SECRET <-Password=SECRET
  296.  
  297. CHKDSK,Do A CHKDSK On Drive C,,CHKDSK C:/F/V <-No password Here
  298. ACCOUNTING,Accounting Programs,C:\JEWEL,JEWEL,SECRET <-Password="SECRET"
  299.  
  300.     About half way down the data file you will see a name followed by a 
  301. comma, and the word SUBMENU in the description field. That tells the 
  302. Cmenu4 program that this is the beginning of the submenu. The word SUBMENU 
  303. MUST be in CAPS. Everything following the submenu title will be the 
  304. selections for the submenu. The last line will be a command to return to 
  305. the main menu. The program looks for the command "SWAP" as the key word to 
  306. swap between the primary, and secondary screens.
  307.  
  308. UTILITY MENU,SUBMENU,, <-Submenu Title
  309.  
  310. RETURN TO MAIN MENU,,,SWAP  <-If command=SWAP, Menu knows that this is 
  311.                             command to switch between the Main, and 
  312.                             Submenus.
  313.  
  314.     If the command is "DOS", or if there is NOTHING for a command, the 
  315. menu interprets this to mean "EXIT TO DOS"
  316.  
  317. EXIT TO DOS,Leave Menu System,,DOS <- command is to leave menu.
  318. EXIT TO DOS,Leave Menu System,,    <- command is to leave menu.
  319.  
  320.     If you delete all of the lines that say EXIT TO DOS, the only way out 
  321. of the menu is by pressing the escape key. If you also disable the escape 
  322. key with the -E option, there is no way out.
  323.  
  324.                                Field Lengths
  325.  
  326.     NAME                    <- 30 Characters. Because this field is for 
  327.                             both Title & Selection name, you should 
  328.                             consider your maximum Selection Name length 
  329.                             to be 20 Characters
  330.  
  331.     DESCRIPTION             <- 55 Characters
  332.     DIRECTORY               <- 65 Characters
  333.     COMMAND                 <- 50 Characters
  334.     PASSWORD                <- 8 Characters
  335.  
  336.     If you exceed the maximum field length for a field, the program will 
  337. start reading into the next field. This can cause unexpected results.
  338.  
  339.  
  340.                              Special Functions
  341.  
  342.                                    Pauses
  343.  
  344.     As soon as a command is finished, the menu is reloaded. This can be 
  345. inconvenient if the command is one like "DIR /W". You can direct the menu 
  346. to add a pause before reloading the menu by adding the characters "(P)" to 
  347. the command.
  348.  
  349. DIR A:,Directory Of Drive A,A:\,DIR /W(P)      Adds Pause before reload
  350.  
  351.                                 Nested Menus
  352.  
  353.     If you want to `nest' your menus, you can give the program a command 
  354. to load a new data file without actually exiting the program. Put the in 
  355. your command field the words "(NEST)" followed by the new data file you 
  356. want to load. The program will see the key phrase (NEST), and know that it 
  357. should read in a new data file. The menu remembers the data file it first 
  358. loaded. If you have the command (NEST) without any data file, the program 
  359. will read in the data file that it started up with. The new data file 
  360. should load in about one second. You can nest this way as many times as 
  361. you want. Below are some examples.
  362.  
  363. FRED MENU,Load The Fred Menu,,(NEST)FRED.DAT   <- Program loads FRED.DAT 
  364.                                                data file
  365.  
  366. MAIN MENU,Return To Regular Menu,,(NEST)       <- Program reloads Original 
  367.                                                menu data file.
  368.  
  369.     If you want to change colors between menus, or change one of the other 
  370. command line options, you will have to restart the menu. You can do this 
  371. as a menu selection using the following.
  372.  
  373. MENU.BAT
  374.  
  375. echo off
  376. cd\
  377. Cmenu4 %1 %2 %3 %4 %5 %6 %7 %8 %9
  378. Runit.bat
  379.  
  380.     A menu command such as "MENU DATABASE.DAT -E" will reload the menu 
  381. with the DATABASE.DAT data file, and the ESC (escape) key disabled. After 
  382. you execute a command from that menu (or quit from it), you will return to 
  383. the regular menu. You can nest this way as many times as you have the 
  384. patience, or imagination.
  385.  
  386. DATA BASE MENU,Go To Data Base Menu,,MENU DATABASE.DAT -E
  387.  
  388.     The above command would call the Menu.bat file again, but this time it 
  389. would replace the data file name with DATABASE.DAT. 
  390.  
  391.                                    Hints
  392.  
  393.     You should use the Menu.bat that comes with this program. The %1 %2 %3 
  394. etc. allows you to conveniently call the program using different options. 
  395. The program must run inside a batch file. Do not omit the "CD\" from the 
  396. beginning of the menu batch file. While the menu does not care where it is 
  397. run, you should make sure that it always runs in the same place. If you do 
  398. not, it will work, but it will pepper your drive with copies of Runit.bat. 
  399. This will waste space, and may cause confusion. You can run the program in 
  400. any directory, but the root is usually the best place. Be sure to set your 
  401. PATH in your Autoexec.bat to the directory in which you run your menu.
  402.  
  403.     PATH=C:\;C:\DOS         <- Sets your path to search both your
  404.                              ROOT &  DOS Directories
  405.  
  406.     DO NOT try to exit the menu with a CTRL-BREAK. You will lock up your 
  407. system.
  408.  
  409.     If your command is a batch file, be sure to end your batch file with 
  410. "MENU", that will restart the menu, but it is better to precede the menu 
  411. command with a "CD\". This way you will not make your PATH command work so 
  412. hard.
  413.     Any selection can have a password. You can put one on the selection to 
  414. go to the utility submenu for example (not on the submenu title line 
  415. itself). Please, do not use the passwords until you are comfortable with 
  416. the system. If you forget the password, you will have to reboot.
  417.     If you want one batch file to call another, and then continue when the 
  418. other finishes, you must call the other batch file with the line 
  419. COMMAND /C BATCHNAME. This will invoke a secondary copy of the command 
  420. processor. Be aware that this exacts a penalty of as much as 40K while the 
  421. second batch file is in use. It is unlikely that you will ever want to use 
  422. this technique.
  423.     Below is a sample Autoexec.bat
  424.  
  425. AUTOEXEC.BAT
  426.  
  427. DATE     <- You can use a Clock program if you have one.
  428. TIME     <- You can use a Clock program if you have one.
  429. PATH=C:\;C:\DOS             <- Or set to the path you like
  430. MENU                        <- Call The Menu.bat file
  431.  
  432.  
  433.     Take the time to experiment with this program. Be sure to run it with, 
  434. and without the Menu.bat file. Try to read the Runit.bat, and see how the 
  435. menu writes to it. If you do not have a ragged menu, try different ways to 
  436. move the cursor around. Remember that the END & HOME keys work.
  437.  
  438.  
  439.